package com.bj.zspace.excel;

import com.alibaba.excel.EasyExcel;

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class WriteExcelResult {
    public static void main(String[] args) throws Exception {

        Map<String, DataResult> statisticResult = new HashMap<>();

        Map<String, String> mapper = new HashMap<>();
        // 文件路径（替换为你的txt文件路径）
        String department = "/Users/tyc/1.txt";
        // 使用 try-with-resources 自动关闭流（Java 7+），无需手动调用 close()
        try (BufferedReader br = new BufferedReader(new FileReader(department))) {
            String line; // 存储每行内容
            // 循环读取，直到 readLine() 返回 null（表示文件结束）
            while ((line = br.readLine()) != null) {
                String[] split = line.split(",");
                mapper.put(split[0].trim(), split[1].trim());
            }
        }
        // 文件路径（替换为你的txt文件路径）
        String filePath = "/Users/tyc/c.txt";
        int lineNum = 0;
        boolean first = true;
        // 使用 try-with-resources 自动关闭流（Java 7+），无需手动调用 close()
        try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
            String line; // 存储每行内容
            // 循环读取，直到 readLine() 返回 null（表示文件结束）
            while ((line = br.readLine()) != null) {
                if (first) {
                    first = false;
                    continue;
                }
                if (line == null || line.trim().isEmpty()) {
                    first = false;
                    continue;
                }
                String[] split = line.split("\t");
                if (split.length != 4) {
                    continue;
                }
                if ("NULL".equals(split[0].trim())) {
                    continue;
                }

                if (!split[2].trim().equals("7") && !split[2].trim().equals("6")) {
                    continue;
                }
                String departmentName = mapper.get(split[3].trim());

                DataResult dataResult = statisticResult.get(departmentName);
                if (dataResult == null) {
                    dataResult = new DataResult();
                    dataResult.setDepartment(departmentName);
                    statisticResult.put(departmentName, dataResult);
                }
                dataResult.addCode(split[0].trim());
                if (split[2].trim().equals("7")) {
                    dataResult.addSuccess();
                } else if (split[2].trim().equals("6")) {
                    dataResult.addFail();
                }
                System.out.println(lineNum++);
            }
        }
        statisticResult.values().forEach(dataResult -> {
            dataResult.setCodes(dataResult.getCodeSet().size());
            dataResult.setSuccessRate(dataResult.getSuccess() * 1.0 / (dataResult.getSuccess() + dataResult.getFail()));
            dataResult.setFailRate(dataResult.getFail() * 1.0 / (dataResult.getSuccess() + dataResult.getFail()));
        });
        // 写法2
        String fileName = "/Users/tyc/instances-" + System.currentTimeMillis() + ".xlsx";
        // 这里 需要指定写用哪个class去写，然后写到第一个sheet，名字为模板 然后文件流会自动关闭
        // 如果这里想使用03 则 传入excelType参数即可
        EasyExcel.write(fileName, DataResult.class).sheet("统计").doWrite(statisticResult.values());


    }
}
